﻿using System;
using System.Collections.Generic;
using kp.rechenwerk.contract;
using System.Drawing;

namespace kp.koordinator.tests
{
  class MockRechenwerk : IRechenwerk
  {

    public Func<double, double> Funktion { get; private set; }
    public double XMin { get; private set; }
    public double XMax { get; private set; }
    public int Werteanzahl { get; private set; }

    public MockRechenwerk(IEnumerable<PointF> simuliertesErgebnis)
    {
      this.simuliertesErgebnis = simuliertesErgebnis;
    }


    public void ProcessBerechnungsauftrag(Berechnungsauftrag auftrag)
    {
        var result = this.Berechne(auftrag.funktion, auftrag.xMin, auftrag.xMax, auftrag.werteanzahl);
        auftrag.processResult(result);
    }


    public IEnumerable<PointF> simuliertesErgebnis;


    public IEnumerable<PointF> Berechne(Func<double, double> funktion, double xMin, double xMax, int werteanzahl)
    {
      this.Funktion = funktion;
      this.XMin = xMin;
      this.XMax = xMax;
      this.Werteanzahl = werteanzahl;

      return this.simuliertesErgebnis;
    }
  }
}
